import { IPSDataEntityObject } from '../ipsdata-entity-object';
import { IPSDEMethodDTOField } from './ipsdemethod-dtofield';
import { IPSSysMethodDTO } from '../../service/ipssys-method-dto';

/**
 *
 * 子接口类型识别属性[type]
 * @export
 * @interface IPSDEMethodDTO
 */
export interface IPSDEMethodDTO extends IPSDataEntityObject {
  /**
   * DTO属性集合
   *
   * @type {IPSDEMethodDTOField[]}
   */
  getPSDEMethodDTOFields(): IPSDEMethodDTOField[] | null;

  /**
   * DTO属性集合
   *
   * @type {IPSDEMethodDTOField[]}
   */
  get psDEMethodDTOFields(): IPSDEMethodDTOField[] | null;

  findPSDEMethodDTOField(objKey: any): IPSDEMethodDTOField | null;

  /**
   * 实体方法DTO对象来源类型
   * @description 值模式 [实体方法DTO来源类型] {DE：实体、 DYNAMODEL：动态模型、 DEACTIONINPUT：实体行为参数、 DEFILTER：实体过滤器、 REFDE：引用实体、 DEDATASETINPUT：实体数据集参数 }
   * @type {( string | 'DE' | 'DYNAMODEL' | 'DEACTIONINPUT' | 'DEFILTER' | 'REFDE' | 'DEDATASETINPUT')}
   */
  sourceType: string | 'DE' | 'DYNAMODEL' | 'DEACTIONINPUT' | 'DEFILTER' | 'REFDE' | 'DEDATASETINPUT';

  /**
   * 源动态模型系统DTO
   *
   * @type {IPSSysMethodDTO}
   */
  getSrcPSSysMethodDTO(): IPSSysMethodDTO | null;

  /**
   * 源动态模型系统DTO
   *
   * @type {IPSSysMethodDTO}
   */
  get srcPSSysMethodDTO(): IPSSysMethodDTO | null;

  /**
   * 源动态模型系统DTO（必须存在）
   *
   * @type {IPSSysMethodDTO}
   */
  getSrcPSSysMethodDTOMust(): IPSSysMethodDTO;

  /**
   * 类型
   * @description 值模式 [实体方法DTO类型] {DEFAULT：实体默认、 DEACTIONINPUT：实体行为自定义参数、 DEFILTER：实体过滤器、 DEDATASETINPUT：实体数据集自定义参数 }
   * @type {( string | 'DEFAULT' | 'DEACTIONINPUT' | 'DEFILTER' | 'DEDATASETINPUT')}
   */
  type: string | 'DEFAULT' | 'DEACTIONINPUT' | 'DEFILTER' | 'DEDATASETINPUT';

  /**
   * 默认域对象
   * @type {boolean}
   * @default false
   */
  defaultMode: boolean;
}
